<?php

/**
 * @Author:      zk
 * @DateTime:    18-7-18 下午2:05
 * @Description: OA用户角色关系相关
 */
class OAUserRole extends Eloquent
{
    protected $table = 'oa_user_role';

    /**
     * 用户状态数组
     * @var array 
     */
    public static $statusArr = [
        1 => '启用',
        2 => '删除',
    ];
    
    /**
     * @Author:      zk
     * @DateTime:    18-7-18 下午2:23
     * @Description: 根据角色id获取该角色下的所有用户信息
     * @param int $role_id 角色id
     * @param array $user_status_arr OA用户状态数组 默认为[1, 2]        (1:启用;2:停用;3:删除;)
     * @return array
     */
    public static function getUserByRoleid($role_id, $user_status_arr = [1, 2]){
        $select_arr = [
            'oa_user.id', 'oa_user.user_name', 'oa_user.real_name', 'oa_user.hrm_user_id', 
            'oa_user_role.role_id', 
        ];
        $list = OAUserRole::leftJoin('oa_user', 'oa_user_role.user_id', '=', 'oa_user.id')
                ->where('oa_user_role.status', 1)
                ->where('oa_user_role.role_id', $role_id)
                ->whereIn('oa_user.status', $user_status_arr)
                ->select($select_arr)
                ->orderBy('oa_user_role.id')
                ->get()
                ->toArray();
        return $list;
    }
    
    /**
     * @Author:      zk
     * @DateTime:    18-8-9 上午10:32
     * @Description: 根据用户id数组获取用户角色信息
     * @param array $user_id_arr OA用户id数组
     * @param array $role_status_arr 角色状态数组 默认为[1]        (1:正常;2:冻结;3:删除;)
     * @return array 以OA用户id user_id为下标的二维数组
     */
    public static function getRoleInfoByUserIdArr($user_id_arr, $role_status_arr = [1]){
        $select_arr = [
            'oa_user_role.user_id', 
            'oa_role.id', 'oa_role.role_name', 'oa_role.role_desc', 
        ];
        $list = OAUserRole::leftJoin('oa_role', 'oa_user_role.role_id', '=', 'oa_role.id')
                ->whereIn('oa_user_role.user_id', $user_id_arr)
                ->where('oa_user_role.status', 1)
                ->whereIn('oa_role.status', $role_status_arr)
                ->select($select_arr)
                ->get()
                ->toArray();
        $result = [];
        if(empty($list)){
            return $result;
        }
        foreach ($list as $k => $v) {
            $temp = [
                'role_id' => $v['id'],
                'role_name' => $v['role_name'],
                'role_desc' => $v['role_desc'],
            ];
            $result[$v['user_id']][] = $temp;
        }
        
        return $result;
    }
    
    /**
     * @Author:      zk
     * @DateTime:    18-8-9 上午10:50
     * @Description: 根据用户id获取用户角色信息
     * @param int $user_id OA用户id
     * @param array $role_status_arr 角色状态数组 默认为[1]        (1:正常;2:冻结;3:删除;)
     * @return array 
     */
    public static function getRoleInfoByUserId($user_id, $role_status_arr = [1]){
        $select_arr = [
            'oa_role.id AS role_id', 'oa_role.role_name', 'oa_role.role_desc', 
        ];
        $list = OAUserRole::leftJoin('oa_role', 'oa_user_role.role_id', '=', 'oa_role.id')
                ->where('oa_user_role.user_id', $user_id)
                ->where('oa_user_role.status', 1)
                ->whereIn('oa_role.status', $role_status_arr)
                ->select($select_arr)
                ->get()
                ->toArray();
        
        return $list;
    }
    
}
